উদাহরণ সহ Hibernate Caching

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM) - Hibernate Caching (First Level, Second Level)
185

Hibernate Caching একটি গুরুত্বপূর্ণ ফিচার, যা ডাটাবেস অ্যাক্সেস অপ্টিমাইজ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেস থেকে ডেটা পুনরায় রিট্রিভ না করে, মেমোরি থেকে দ্রুত অ্যাক্সেস নিশ্চিত করে। Hibernate Caching ব্যবহার করে অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি করা যায়।


Hibernate Caching এর প্রকারভেদ

Hibernate দুটি ধরণের ক্যাশিং সাপোর্ট করে:

১. First-Level Cache (Session Cache)

  • এটি Hibernate-এর ডিফল্ট ক্যাশিং।
  • একক Session-এর মধ্যে ডেটা ক্যাশ করে রাখে।
  • Scope: শুধুমাত্র একটি Hibernate Session।
  • কনফিগারেশনের প্রয়োজন নেই।

২. Second-Level Cache

  • এটি ডিফল্টভাবে নিষ্ক্রিয় থাকে এবং ম্যানুয়ালি কনফিগার করতে হয়।
  • একাধিক সেশন জুড়ে ডেটা ক্যাশ করে রাখে।
  • Scope: Application-wide।
  • Hibernate এর জন্য বিভিন্ন Caching Provider ব্যবহার করা যায়, যেমন:
    • Ehcache
    • Infinispan
    • Redis
    • Hazelcast

Hibernate Caching কনফিগারেশন উদাহরণ

১. First-Level Cache উদাহরণ

First-Level Cache স্বয়ংক্রিয়ভাবে Hibernate Session-এ কাজ করে। এখানে কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন নেই।

Session session = sessionFactory.openSession();

// প্রথমবার ডেটা লোড করবে
User user1 = session.get(User.class, 1L);

// একই সেশনে আবার অ্যাক্সেস করলে ডেটাবেসে কোয়েরি হবে না
User user2 = session.get(User.class, 1L);

session.close();

ডিফল্ট বিহেভিয়র: user1 এবং user2 একই অবজেক্ট রেফারেন্স হবে, এবং Hibernate ডেটাবেসে দ্বিতীয়বার কোয়েরি করবে না।


২. Second-Level Cache উদাহরণ (Ehcache)

Second-Level Cache সেটআপ করতে Ehcache ব্যবহার করা যেতে পারে।

Dependency যোগ করুন
pom.xml-এ Ehcache-এর জন্য নিচের ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
</dependency>

Hibernate Configuration (application.properties)
Hibernate Second-Level Cache সক্রিয় করতে নিচের কনফিগারেশন যুক্ত করুন:

spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
spring.jpa.properties.javax.cache.provider=org.ehcache.jsr107.EhcacheCachingProvider

Ehcache Configurations (ehcache.xml)
Ehcache ব্যবহারের জন্য ehcache.xml ফাইল তৈরি করুন:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.ehcache.org/v3"
        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
    <cache alias="userCache">
        <heap unit="entries">100</heap>
        <expiry>
            <ttl unit="seconds">300</ttl>
        </expiry>
    </cache>
</config>

Entity ক্লাসে Cache এনোটেশন যোগ করুন

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

Hibernate Caching ব্যবহার উদাহরণ

কোডে Second-Level Cache টেস্ট করা

// প্রথমবার ডেটা লোড
User user1 = session1.get(User.class, 1L);
session1.close();

// নতুন সেশনে একই ডেটা লোড করলে ক্যাশ থেকে রিট্রিভ হবে
Session session2 = sessionFactory.openSession();
User user2 = session2.get(User.class, 1L);
session2.close();

ক্যাশ বিহেভিয়র:

  • প্রথমবার ডেটা ডেটাবেস থেকে লোড হবে।
  • দ্বিতীয়বার, অন্য সেশনে একই ডেটা Second-Level Cache থেকে রিট্রিভ হবে।

Hibernate Caching এর সুবিধা

  1. পারফরম্যান্স উন্নতি: ডেটাবেস থেকে পুনঃপুনঃ ডেটা রিট্রিভ না করে ক্যাশ থেকে দ্রুত অ্যাক্সেস নিশ্চিত করে।
  2. ডাটাবেস লোড কমানো: কম কোয়েরি চালিয়ে ডাটাবেসে চাপ হ্রাস করে।
  3. অ্যাপ্লিকেশন স্কেলেবিলিটি বৃদ্ধি: বড় ডেটাসেটের সাথেও উচ্চ পারফরম্যান্স বজায় রাখে।

সতর্কতা এবং সীমাবদ্ধতা

  • Second-Level Cache ব্যবহারের সময় ডেটা সিঙ্ক্রোনাইজেশন চ্যালেঞ্জ হতে পারে।
  • খুব বড় ডেটা ক্যাশ করলে মেমোরি সমস্যা হতে পারে।
  • ক্যাশ ব্যবস্থাপনা সঠিকভাবে কনফিগার না করলে এর সুবিধা হ্রাস পেতে পারে।

Hibernate Caching, বিশেষত Second-Level Cache, ব্যবহার করে স্প্রিং বুট অ্যাপ্লিকেশনের ডেটাবেস অপারেশন দ্রুত এবং কার্যকর করা যায়। Ehcache এর মতো কনফিগারেবল ক্যাশিং সলিউশন ব্যবহার করে পারফরম্যান্স অপ্টিমাইজেশন আরও কার্যকরভাবে করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...